package com.NetSunWeiQin.chapter11.calc;


import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;


/**

 * @author : wushikai
 * <p>
 * date : 2022-04-25
 * 实现远程接口RemoteInterface，并继承UnicastRemoteObject
 * 注意RemoteObject这个类，实现了Serializable, Remote这两个接口
 *   远程对象必须实现java.rmi.server.UniCastRemoteObject类，该类的构造函数中将生成stub和skeleton，
 *   这样才能保证客户端访问获得远程对象时，该远程对象将会把自身的一个拷贝以Socket的形式传输给客户端，
 *   此时客户端所获得的这个拷贝称为 Stub（ 存根）， 而服务器端本身已存在的远程对象则称之为Skeleton（骨架）;
 *   其实此时的存根是客户端的一个代理，用于与服务器端的通信，  而骨架也可认为是服务器端的一个代理，
 *   用于接收客户端的请求之后调用远程方法来响应客户端的请求。
 */
public class RemoteImpl extends UnicastRemoteObject implements RemoteInterface {




    // 这个实现必须有一个显式的构造函数，并且要抛出一个RemoteException异常
    public RemoteImpl() throws RemoteException {
    }


    public String doSomething() throws RemoteException {
        return "OK ,You can do......";
    }

    // 实现 Calculate方法,返回计算结果
    public int Calculate(int num1, int num2) throws RemoteException {
        return (num1 + num2);
    }
}
